package nsu.edu.zsq.util;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

import org.springframework.web.multipart.MultipartFile;

import lombok.extern.slf4j.Slf4j;
import nsu.edu.zsq.common.ApplicationContextHelper;
import nsu.edu.zsq.param.MyConfiguration;

/** 
* Description: 上传文件的工具类<br>
*/
@Slf4j
public class UploadFileUtil {
    
    /**
     * 保存用户上传的文件到指定磁盘位置（从my-configuration.properties配置文件中读取）
     * @param excelFile
     */
    public static void uploadFile(MultipartFile excelFile) {
        try {
            String fileName = excelFile.getOriginalFilename();
            // 保存的文件名不能有特殊符号（时分秒中的：就不行，所以更换了日期分隔符）
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd HH.mm.ss");
            fileName = formatter.format(new Date()) + "_" + new Random().nextInt(100) + "_" + fileName ;
            // 获取上传路径(问题：执行时间上会变慢)
            String uploadPath = ApplicationContextHelper.popBean(MyConfiguration.class).getUploadPath();
            File filePath = new File(uploadPath);
            // 判断路径是否存在，不存在则创建一个
            if(!filePath.getParentFile().exists()){
                filePath.getParentFile().mkdirs(); 
            }
            excelFile.transferTo(new File(uploadPath + fileName));
            log.info("保存文件成功，文件名：{}", fileName);
        } catch (Exception e) {
            log.info("=============保存文件失败==============");
            e.printStackTrace();
        }
    }
}
